package jp.co.dailyReport.expense.action;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.validator.DynaValidatorForm;
import jp.co.dailyReport.DataUnavailableException;
import jp.co.dailyReport.staff.Staff;
import jp.co.dailyReport.staff.StaffManager;

/**
 * 単価設定社員選択ページの「設定」ボタン
 * が押されたときの処理を管理するクラスです。
 */
public class ExpenseStaffSetUnitcostAction extends Action {

	private static Logger log = Logger.getLogger(ExpenseStaffSetUnitcostAction.class);

	/**
	 * 単価設定社員選択ページの「設定」ボタンが押されたときの処理を行います。<BR>
	 * 社員IDから社員情報を取得し、DynaValidatorFormオブジェクトの名前、単価フィールドに設定します。
	 * 
	 * @param mapping このインスタンスを選択するために使用したActionMapping
	 * @param form 存在するならば、このリクエストのためのActionForm Bean
	 * @param request 処理しているHTTPリクエスト
	 * @param response 処理しているHTTPレスポンス
	 * @return ActionForwardインスタンス
	 * @throws IOException, ServletException
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
		 throws IOException, ServletException {

		log.debug("ExpenseStaffSetUnitcostAction start");
		DynaValidatorForm expenseManufacturingStaffActionForm = (DynaValidatorForm)form;
		int staffId = ((Integer)expenseManufacturingStaffActionForm.get("staffId")).intValue();
		Staff staff = null;
		try {
			staff = StaffManager.load(staffId);
			expenseManufacturingStaffActionForm.set("name", staff.getName());
			expenseManufacturingStaffActionForm.set("targetUnitPrice", String.valueOf(staff.getTargetUnitPrice()));
		} catch(DataUnavailableException due) {
			log.error(due.getMessage());
		}

		log.debug("ExpenseStaffSetUnitcostAction end");
		return mapping.findForward("setunitcost");
	}
}
